/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package frontera.dao;

import control.SIRHApp;
import entidad.Horario;
import entidad.HorarioDia;
import javax.persistence.EntityManager;
import javax.persistence.NonUniqueResultException;
import javax.persistence.Query;

/**
 *
 * @author tuareg
 */
public class HorarioDAO  extends DAO<Horario>{

	public HorarioDAO(String nombreEntidad) {
		super(nombreEntidad);
	}

	public HorarioDAO() {
		this("Horario");
	}
	
        @Override
	public boolean actualizar(Horario viejaEntidad, Horario nuevaEntidad) {
            EntityManager em = emf.createEntityManager();
            em.getTransaction().begin();
            boolean ret= false;
            try {
                int i = 0;
                for(HorarioDia hd : viejaEntidad.getHorario()){
                    SIRHApp.getInstance().getDAOHorarioDia().actualizar(hd, nuevaEntidad.getHorario().get(i));
                    i++;
                }
                viejaEntidad = leer(viejaEntidad);
                em.merge(viejaEntidad);
                em.getTransaction().commit();
                ret = true;
            } catch (Exception e) {
                e.printStackTrace();
                em.getTransaction().rollback();
            } finally {
                em.close();
                return ret;
            }
	}
        public Horario leer(Horario par) {
            EntityManager em = emf.createEntityManager();
            Horario horario = null;

            Query q = em.createQuery(   "SELECT h FROM Horario h " +
                                        "WHERE h.idHorario = :IDHORARIO")
                                        .setParameter("IDHORARIO", par.getIdHorario());
            try {                       
                horario=(Horario)q.getSingleResult();
            } catch (NonUniqueResultException e) {
                horario = (Horario)q.getResultList().get(0);
            } catch (Exception e){
                e.printStackTrace();
            }finally {
                em.close();
                return horario;
            }
        }

	/*@Override
        public boolean crear(Horario nuevaEntidad) {
        boolean retorno=false;      
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        try {
            
            for (HorarioDia hd: nuevaEntidad.getHorario()){
                hd.setHorario(nuevaEntidad);
                if(!SIRHApp.getInstance().getDAOHorarioDia().crear(hd)){
                    return false;
                }
            }
           em.persist(nuevaEntidad);
            em.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
            em.getTransaction().rollback();
        } finally {
            em.close();
            return retorno;
        }
    }*/
}
